<?php

namespace System\Core;

use \System\Types;

final class Applications extends Types\Object
{

    const PHPERROR = "error_php";

    private static $defaultApp;
    private static $appspath = array();

    public static function GetAppName()
    {
        return self::$defaultApp;
    }

    public static function GetAppErrorPath($errorType, $app = null)
    {
        return self::GetAppPath($app) . "Errors/{$errorType}" . \EXT;
    }

    public static function GetAppPath($app = null)
    {
        $app = $app ? : self::$defaultApp;

        return self::$appspath[$app];
    }

    function __construct()
    {
        parent::__construct();
    }

    public static function SetDefaultApplication($app)
    {
        if (empty($app))
        {
            throw new \Exception('Informe o alias da aplicação.');
        }

        self::$defaultApp = $app;
    }

    public static function SetApplicationsPath($path, $appName)
    {
        if (empty($appName))
        {
            throw new \Exception('Informe o alias da aplicação.');
        }

        if (empty($path))
        {
            throw new \Exception('Informe o caminho da aplicação.');
        }

        $path .= (!\preg_match('/^(.*)(\\|\/)$/i', $path)) ? \DIRECTORY_SEPARATOR : '';

        self::$appspath[$appName] = $path;

        /* @var $loader Loader */
        $loader = Loader::GetInstance();

        $loader->AddPath($path);
    }

}
